/***************************************************************************
 创建者: 华磊
 开始时间: 2018.8.14
 copyright: (C) 华友高科
 修改说明: (每次有修改就添加一条，带有 修改人，修改时间，修改描述)
 example (1) 李文友 2017.5.8 类的具体实现代码编写

 ***************************************************************************
 *  @file ultrasonicsensor.h
 *  功能: 超声波传感器的设置和数据获取
 *
 *                                                                         *
 ***************************************************************************/
#ifndef AXISDEFINES_H
#define AXISDEFINES_H
#include "qvector.h"
#include "MacroDefine/GeneralDefine.h"
#define IF_DEBUG 0 //控制是否打印调试信息
#define ALLOW_AXIS_STATUS_CHECK 0 //是否允许轴状态检查

#define VEL_PROFILE_ARRY_MAX 1000 //速度轨迹最大缓存条数

//enum MC_ROBOT_TYPE//机械臂类型
//{
//    ENUM_SCARA , //SCARA
//    ENUM_6AXIS_CHAIN,//六轴垂直串联
//    ENUM_4AXIS_PALLET,//四轴码垛
//    ENUM_7AXIS,
//    ENUM_ROBOT_TYPE_END//不支持类型
//};


enum E_CHECK_MODE
{
    E_CHECK_MODE_T1,
    E_CHECK_MODE_T2,
    E_CHECK_EMERGENCY_STOP
};

enum E_MOTION_TYPE
{
    E_MOTION_TRAP_PERCENT,
    E_MOTION_TRAP_TIME,
    E_MOTION_SPLINE_ZERO_PERCENT,
    E_MOTION_SPLINE_ZERO_TIME,
    E_MOTION_SPLINE_CONTINUS_PERCENT,
    E_MOTION_SPLINE_CONTINUS_TIME
};
enum E_AXIS_ABSTRACT_TYPE
{
    E_AXIS_ABSTRACT_REAL,//实轴
    E_AXIS_ABSTRACT_VIRTUAL, //虚轴。
    E_AXIS_ABSTRACT_TIME, //时间轴，用于调节速度
};
enum E_AXIS_STATUS
{
    E_AXIS_STATUS_INIT,
    E_AXIS_STATUS_NORMAL,
    E_AXIS_STATUS_ERROR
};
enum E_AXIS_ERROR
{
    E_AXIS_ERROR_EXCEED_POSITION,
    E_AXIS_ERROR_EXCEED_VELOCITY,
    E_AXIS_ERROR_EXCEED_TORQUE,
    E_AXIS_ERROR_EXCEED_FOLLOW_OFFSET,

};

struct AxisMoveParameter
{
    int motionType;
    double target;
    int velocityUnitType;
    double velocity;
    double totalTimeDuration;
};

struct VelPoint
{
    double positionIn;//位置
    double velIn;//速度
    double accIn;//加速度
    double timeDuration;//单段时间
};

struct VelCoordinatePoint
{
    PointPro positionIn;//位置
    double velIn;//速度
    double accIn;//加速度
    double timeDuration;//单段时间
};



#endif // AXISDEFINES_H
